using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using AdminCondominio.Negocio;
using AdminCondominio.Dominio;

namespace AdminCondominio.Controllers
{
    public class SeparacionAreaComunController : Controller
    {

        public SeparacionAreaComunService separacionAreaComunService { get; set; }
        public AreaComunService AreaComunService { get; set; }
        public ResidenteService residenteService { get; set; }
        //
        // GET: /SeparacionAreaComun/

        public ActionResult Index()
        {

            ICollection<SeparacionAreaComun> separacionList = separacionAreaComunService.ListarReservas("20/07/2011");

            return View(separacionList);
        }

        //
        // GET: /SeparacionAreaComun/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /SeparacionAreaComun/Create

        public ActionResult Create()
        {
            ICollection<Residente> List = residenteService.ListarResidentes("");

            IEnumerable<SelectListItem> residentes = new SelectList(List, "CoResidente", "NoResidente");

            this.ViewData["residentes"] = residentes;


            ICollection<AreaComun> ListAre = AreaComunService.ListarAreaComun();
            this.ViewData["areas"] = new SelectList(ListAre, "CoAreaComun", "Ubicacion");
            

            return View();
        } 

        //
        // POST: /SeparacionAreaComun/Create

        //[HttpPost]
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {
                    
                        SeparacionAreaComun _separacion = new SeparacionAreaComun();
                        _separacion.AreaComun = new AreaComun();
                        _separacion.Residente = new Residente();
                            _separacion.Residente.CoResidente = int.Parse(collection["CoResidente"].ToString());
                            _separacion.AreaComun.CoAreaComun = int.Parse(collection["CoAreaComun"].ToString());
                        
                            _separacion.FeSeparacion = Convert.ToDateTime(collection["FeSeparacion"]);
                            _separacion.NuPersonas = Convert.ToInt16(collection["NuPersonas"]);
                            _separacion.NoResponsable = (string)collection["NoResponsable"];
                            _separacion.TxComentario = (string)collection["TxComentario"];
                            _separacion.Estado = (string)collection["Estado"];

                            separacionAreaComunService.RegistrarSeparacionAreaComun(_separacion);
                        
                        return RedirectToAction("Index");
                }
                else
                {
                    return View();
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError(String.Empty, "Error al Crear la Separacion: " + e.Message);
                return View();
            }
        }

        public ActionResult Edit(int codigo)
        {
             SeparacionAreaComun sep = null;
             try
            {
                sep = separacionAreaComunService.ObtenerSeparacionAreaComun(codigo);

                ICollection<Residente> List = residenteService.ListarResidentes("");

                IEnumerable<SelectListItem> residentes = new SelectList(List, "CoResidente", "NoResidente",sep.Residente.CoResidente);

                this.ViewData["residentes"] = residentes;


                ICollection<AreaComun> ListAre = AreaComunService.ListarAreaComun();
                this.ViewData["areas"] = new SelectList(ListAre, "CoAreaComun", "Ubicacion",sep.AreaComun.CoAreaComun);
            }
             catch
             {
                 ModelState.AddModelError(string.Empty, "Error al crear el tipo de area comun");
                 return View();
             }
            return View(sep);
        }


        [HttpPost]
        public ActionResult Edit(int codigo, FormCollection collection)
        {
            SeparacionAreaComun _separacion = null;
            try
            {
                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {


                    _separacion = separacionAreaComunService.ObtenerSeparacionAreaComun(codigo);
                    
                    _separacion.FeSeparacion = Convert.ToDateTime(collection["FeSeparacion"]);
                    _separacion.NuPersonas = Convert.ToInt16(collection["NuPersonas"]);
                    _separacion.NoResponsable = (string)collection["NoResponsable"];
                    _separacion.TxComentario = (string)collection["TxComentario"];
                    _separacion.Estado = (string)collection["Estado"];

                    separacionAreaComunService.ModificarSeparacionAreaComun(_separacion);

                    return RedirectToAction("Index");
                }
                else
                {
                    return View();
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError(String.Empty, "Error al Crear la Separacion: " + e.Message);
                return View();
            }
        }

        
        public ActionResult Delete(int codigo)
        {
            SeparacionAreaComun sep = null;
             try
            {
                sep = separacionAreaComunService.ObtenerSeparacionAreaComun(codigo);
            }
             catch
             {
                 ModelState.AddModelError(string.Empty, "Error al obtener la separacion area comun");
                 throw;
             }
                 return View(sep);
        }

        //
        // POST: /AreaComun/Delete/5

        [HttpPost]
        public ActionResult Delete(int codigo, FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {

                    separacionAreaComunService.DeleteSeparacionAreaComun(codigo);
                    return RedirectToAction("Index");
                }
                else
                {
                    return View();
                }
            }
            catch
            {
                ModelState.AddModelError(string.Empty, "Error al eliminar la separacion area comun");
                return View();
            }
        }
        
    }
}
